암호화 되지 않은 Amazon EFS 암호화 하기
Amazon EFS의 암호화
Amazon EFS는 유휴시(저장된) 데이터 암호화와 전송시 데이터 암호화를 지원하고 있습니다. 본 블로그에서는 유휴시 데이터 암호화와 암호화되지 않은 EFS를 암호화 하는 방법에 대해서 알아보도록 하겠습니다.
Amazon EFS 암호화는, EFS 생성시 암호화 항목을 체크하는 것으로 손쉽게 유휴 데이터를 암호화를 설정할 수 있습니다.
AWS 콘솔에서 EFS를 생성하면 기본적으로 이름과 VPC, 스토리지 클래스를 설정할 수 있는 창이 나옵니다. 여기서 그대로 생성을 진행하면 '자동 백업x / 암호화o' 로 설정된 EFS가 생성됩니다. '사용자 지정' 버튼을 눌러 다양한 옵션에 대한 설정을 진행할 수 있습니다. 사용자는 암호화 활성화 여부와 암호화에 사용할 KMS 키를 지정할 수 있습니다. 암호화 키는 기본적으로 AWS KMS에서 제공되는 서비스 키(aws/elasticfilesystem)를 사용하며, 사용자가 직접 KMS 키를 설정할 수도 있습니다.
암호화 되지 않은 EFS의 암호화
유휴 상태의 데이터에 관해, 암호화 설정을 하지 않고 생성된 EFS를 나중에 암호화를 하고 싶을 때는 어떻게 할 수 있을까요? 안타깝지만 이미 생성된 EFS의 암호화에 대한 설정은 변경할 수 없습니다. 생성된 EFS의 암호화 설정을 바꾸기 위해서는 암호화 유무를 설정할 새로운 EFS를 만들어 기존 EFS의 데이터를 새 EFS에 복사하는 방법 밖에 없습니다. 그 방법으로는 2가지가 존재합니다.
- AWS Backup 을 이용하여 새 EFS로 복구
- AWS DataSync 를 이용한 EFS 간 데이터 복사
기존에는 EFS를 백업, 이름/암호화 등의 설정 변경을 위해서는 새 EFS를 생성하고 AWS DataSync를 사용하여 기존의 EFS 와 새 EFS 간에 데이터를 전송하는 작업이 필요했습니다. 하지만 DataSync 서비스의 학습 시간과 사용 비용을 감수하는 등 추가적인 자원이 필요했습니다. 하지만 AWS Backup이 출시되며 이러한 작업 단계들을 줄여 손쉽게 처리할 수 있게 되었습니다.
AWS Backup으로 새 EFS로 복구 방식은 암호화 뿐만 아니라 파일 시스템 유형(One Zone/Region) 도 새롭게 설정가능 하다는 장점이 있지만 복구 되는 EFS의 이름은 설정할 수 없으므로 태그 사용 등 추가적인 조치가 필요할 수도 있습니다.
이번 블로그에서는 AWS Backup을 이용하여 암호화 되지 않은 EFS를 암호화하는 방법에 대해 알아보도록 하겠습니다.
step 1. AWS Backup으로 백업 생성
자동 백업이 설정되어 있다면, 백업 볼트를 확인해 해당 백업 파일로 그대로 진행해도 되며 자동 백업이 설정되지 않은 EFS 는 AWS Backup의 온디맨드 백업을 이용하여 백업을 생성할 필요가 있습니다.
콘솔 화면에서 온디맨드 백업 생성을 진행해줍니다. 백업 기간은 '지금 백업 생성', 백업을 생성할 대상, 저장 위치(볼트), IAM 역할 등을 설정하고 백업 생성을 진행합니다. 생성된 백업은 백업 생성시 지정한 볼트에서 확인할 수 있습니다.
step 2. 복원 실행
만들어진 백업을 확인한 후, 해당 백업으로 복원을 실행해 줍니다. 암호화 적용을 위해서는 복원 위치를 새로운 EFS를 생성해 복원을 진행하는 '새 파일 시스템에 복원'으로 설정해야합니다. 그리고 암호화 활성화 항목을 체크하는 것으로 암호화된 EFS를 생성할 수 있습니다. 백업 복원을 실행하고 콘솔의 '작업' 항목에서 복원 작업이 모두 완료되면 새로운 EFS가 생성된 것을 확인할 수 있습니다.
암호화키는 KMS 의 키를 사용해야하며, 직접 생성한 키 또는 AWS에서 EFS의 암호화를 위해 자동으로 생성한 키를 사용할 수 있습니다.
step 3. 생성된 EFS 확인
생성된 EFS를 EC2에 탑재하여 확인해보겠습니다. AWS Backup을 통해 생성된 EFS에는 aws-backup-restore_datetime 디렉토리가 생성됩니다.
aws-backup-lost+found_timestamp 디렉토리는 적절한 디렉터리로 복원할 수 없는 데이터 조각이 배치되는 디렉토리이며 복원이 완료되지 않은 경우에는 aws-backup-failed-restore_timestamp 디렉토리가 생성딥니다. AWS Backup을 통한 방식은 복원이 완벽하게 이루어지지 않은 경우에 추가적인 작업이 필요하게 되며, 파일 시스템의 크기, 다른 백업 작업의 실행 등의 요인에 따라 복원에 많은 시간이 걸릴 수도 있으므로 AWS Backup과 DataSync 중 어떤 서비스를 이용하여 암호화 작업을 진행할 것인지 고려해볼 필요가 있습니다.
AWS 공식 설명서에 암호화 설정(유휴시/전송중)에 따라서 I/O 레이턴시와 처리량에 미미한 퍼포먼스의 차이가 있다고 설명되어 있어 touch 명령어로 암호화 여하에 따른 성능을 테스트 해 보았습니다. 1024개의 파일을 생성하는 작업에 있어 오히려 암호화가 되어 있지 않은 EFS의 작업 시간이 더 걸리는 경우도 있었으며 차이가 있더라도 큰 차이라고는 볼 수가 없었습니다. 작업량이 많은 상황에 대해서는 느낄 수 있을 정도의 차이가 있을 수 있겠지만, 작업량이 많지 않은 상황에서는 크게 신경쓰지 않아도 될 문제라고 생각됩니다.
참조